home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / bptree.zip / BPTREE.H < prev    next >
Text File  |  1992-09-04  |  2KB  |  85 lines

  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <malloc.h>
  4.  
  5. #define BPT_LNODE 1
  6. #define BPT_INODE 2
  7. #define BPT_NOSPECIAL 0
  8. #define BPT_FIRST     1
  9. #define BPT_LAST      2
  10. struct TAGTree;
  11. struct TAGTreeNode;
  12. struct TAGINode;
  13. struct TAGLNode;
  14.  
  15. #ifdef __WINMEM__
  16.    void FAR * FAR Malloc( DWORD bytes );
  17.    void FAR Free( void FAR *memory );
  18.    #define StrLen lstrlen
  19.    #define StrCpy lstrcpy
  20.    #define StrCmp lstrcmp
  21.    #define LIBFUNC FAR
  22.    typedef void FAR *DATAPTR;
  23.    typedef char FAR *KEYPTR;
  24. #else
  25.    #define Malloc malloc
  26.    #define Free free
  27.    #define StrLen strlen
  28.    #define StrCpy strcpy
  29.    #define StrCmp strcmp
  30.    #define WORD unsigned int
  31.    #define LONG long
  32.    #define LPSTR char *
  33.    #define FAR
  34.    #define LIBFUNC
  35.    typedef void *DATAPTR;
  36.    typedef char *KEYPTR;
  37. #endif
  38.  
  39. struct TAGLNode {
  40.    KEYPTR  keyValue;
  41.    WORD    specialType;
  42.    DATAPTR data;
  43.    struct TAGTreeNode FAR *next;
  44.    struct TAGTreeNode FAR *prev;
  45. };
  46.  
  47. struct TAGINode {
  48.    KEYPTR keyValue;
  49.    struct TAGTreeNode FAR *left;
  50.    struct TAGTreeNode FAR *right;
  51. };
  52.  
  53. typedef struct TAGTreeNode {
  54.    WORD nodeType;
  55.    union {
  56.       struct TAGINode inode;
  57.       struct TAGLNode lnode;
  58.    };
  59. } TREENODE, FAR *TREENODEPTR;
  60. typedef TREENODEPTR FAR *PTR2TREENODEPTR;
  61. typedef struct TAGTree {
  62.    struct TAGTreeNode FAR *curPointer;
  63.    struct TAGTreeNode first;
  64.    struct TAGTreeNode last;   
  65.    struct TAGTreeNode FAR *tree;
  66. } TREE, FAR *TREEPTR;
  67.  
  68. TREEPTR        LIBFUNC NewTree( void );  
  69. TREENODEPTR    LIBFUNC InsertInTree( TREEPTR tree, KEYPTR key, DATAPTR data );
  70. DATAPTR        LIBFUNC DeleteFromTree( TREEPTR tree, KEYPTR key );
  71. TREENODEPTR    LIBFUNC FindInTree( TREEPTR tree, KEYPTR key );
  72. TREENODEPTR    LIBFUNC FirstInTree( TREEPTR tree );
  73. TREENODEPTR    LIBFUNC LastInTree( TREEPTR tree ); 
  74. TREENODEPTR    LIBFUNC NextInTree( TREEPTR tree );
  75. TREENODEPTR    LIBFUNC PrevInTree( TREEPTR tree );
  76. KEYPTR         LIBFUNC NodeKeyValue( TREENODEPTR tNode );
  77. DATAPTR        LIBFUNC NodeDataValue( TREENODEPTR tNode );
  78. TREENODEPTR    LIBFUNC MakeINode( void );
  79. void           LIBFUNC FreeINode( TREENODEPTR tNode );
  80. TREENODEPTR    LIBFUNC MakeLNode( void );
  81. void           LIBFUNC FreeLNode( TREENODEPTR tNode );
  82. LPSTR          LIBFUNC MakeMemBuf( int size );
  83. void           LIBFUNC FreeMemBuf( KEYPTR szBuf );
  84.  
  85.